package com.ship.contract.bean;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ship.common.core.base.BaseBean;
import com.ship.common.core.base.Joinable;
import com.ship.common.core.mapping.Label;
import com.ship.common.core.mapping.SearchItem;
import com.ship.common.core.mapping.TableColumn;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.Date;

/**
 * 船舶船员信息明细表
 * @TableName sm_ship_crew_detail
 */
@TableName(value ="sm_ship_crew_detail")
@Data
public class SmShipCrewDetail extends BaseBean implements Joinable {

    /**
     * 船员主表ID
     */
    @ApiModelProperty(value = "船员主表ID")
    private Long shipCrewId;

    /**
     * 船员名字
     */
    @Label(value = "船员名字")
    @TableColumn
    @ApiModelProperty(value = "船员名字")
    private String crewName;

    @TableField(exist = false)
    private String crewNameListForSearch;

    /**
     * 船员职务
     */
    @Label(value = "船员职务")
    @TableColumn
    @ApiModelProperty(value = "船员职务")
    private String crewRank;


    @TableField(exist = false)
    private String crewRankListForSearch;

    /**
     * 出生日期
     */
    @Label(value = "出生日期")
    @TableColumn
    @ApiModelProperty(value = "出生日期")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    private Date crewBirth;

    /**
     * 出生地
     */
    @Label(value = "出生地")
    @TableColumn
    @ApiModelProperty(value = "出生地")
    private String birthPlace;

    /**
     * 船员国籍
     */
    @Label(value = "船员国籍")
    @TableColumn
    @ApiModelProperty(value = "船员国籍")
    private String crewCountry;

    /**
     * 船员证号码
     */
    @Label(value = "船员证号码")
    @TableColumn
    @ApiModelProperty(value = "船员证号码")
    private String passportNo;

    /**
     * 发证日期
     */
    @Label(value = "发证日期")
    @TableColumn
    @ApiModelProperty(value = "发证日期")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    private Date issueDate;

    /**
     * 到期日期
     */
    @Label(value = "到期日期")
    @TableColumn
    @ApiModelProperty(value = "到期日期")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    private Date expiraDate;

    /**
     * 船员证登记地
     */
    @Label(value = "船员证登记地")
    @TableColumn
    @ApiModelProperty(value = "船员证登记地")
    private String passportPlace;

    /**
     * 上船时间
     */
    @Label(value = "上船时间")
    @TableColumn
    @ApiModelProperty(value = "上船时间")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    private Date onBoatDate;

    /**
     * 离船时间
     */
    @Label(value = "离船时间")
    @TableColumn
    @ApiModelProperty(value = "离船时间")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    private Date offBoatDate;

    /**
     * 上船地点
     */
    @Label(value = "上船地点")
    @TableColumn
    @ApiModelProperty(value = "上船地点")
    private String onBoatPlace;

    /**
     * 离船地点
     */
    @Label(value = "离船地点")
    @TableColumn
    @ApiModelProperty(value = "离船地点")
    private String offBoatPlace;

    /**
     * 是否高级船员（1：是，0：否）
     */
    @Label(value = "高级船员",enumContent = "高级船员",multiSelect = true)
    @SearchItem
    @TableColumn
    @ApiModelProperty(value = "是否高级船员（1：是，0：否）")
    private String isHigh;

    /**
     * 状态（1：在船，0：离船）
     */
    @Label(value = "状态",enumContent = "船员状态",multiSelect = true)
    @SearchItem
    @TableColumn
    @ApiModelProperty(value = "状态（1：在船，0：离船）")
    private String status;

    /**
     * 是否高级船员（1：是，0：否）
     */
    @ApiModelProperty(value = "是否高级船员（1：是，0：否）")
    @TableField(exist = false)
    private String isHighListForSearch;

    /**
     * 状态（1：在船，0：离船）
     */
    @ApiModelProperty(value = "状态（1：在船，0：离船）")
    @TableField(exist = false)
    private String statusListForSearch;

    /**
     * 预警信息
     */
    @Label(value = "预警信息")
    @TableColumn
    @ApiModelProperty(value = "预警信息")
    private String warningMessage;

    /**
     * 信息完善节点（1：基础信息，2：证件信息，3：其他，4：已完成）
     */
    @ApiModelProperty(value = "信息完善节点（1：基础信息，2：证件信息，3：其他，4：已完成）")
    private String messagePoint;

    /**
     * 是否临时缓存（1：是，0：否）
     */
    @ApiModelProperty(value = "是否临时缓存（1：是，0：否）")
    private String isTemp;

    @Override
    public String getLabel() {
        return null;
    }

    @Override
    public String getValue() {
        return null;
    }
}